/**
 */
var input = document.getElementsByTagName('input');
input[0].onchange = function(e) {
    sendData({value: input[0].value}, 'validate', input[0]);
}
input[1].onchange = function(e) {
    sendData({value: input[1].value}, 'validate', input[1]);
}

 /**
  * 第一步 请求模块
  * 异步请求对向
  * @data       请求数据
  * @dealType   响应数据处理对象
  * @dom        事件源
  */
var sendData = function(data, dealType, dom) {
    var xhr = new XMLHttpRequest(),
        url = 'getData.php?mod=userInfo';
        // 请求返回事件
    xhr.onload = function(event) {
        if ((xhr.status >= 200 && xhr.status < 300) ||
            xhr.status == 304 ) {
            dealData(xhr.responseText, dealType, dom);
        } else {
            // 请求失败
        }
    }
    for(var i in data) {
        url += '&' + i + '=' + data[i];
    }
    // 发送异步请求
    xhr.open('get', url, true);
    xhr.send(null);
}

/**
 * 第二部 响应数据适配模块
 * 没有对返回的结果做任何逻辑处理，直接将得到的结果传入响应数据适配模块对向方法中
 */
var dealData = function(data, dealType, dom) {
    var dataType = Object.prototype.toString.call(data);
    switch(dealType) {
        case 'sug':
            if (dataType === "[object Array]") {
                return createSug(data, dom);
            }
            if (dataType === "[object object]") {
                var newData = [];
                for(var i in data) {
                    newData.push(data[i]);
                }
                return createSug(newData, dom);
            }
            return createSug([data], dom);
            break;
        case 'validate':
            return createValidateResult(data, dom);
            break;
    }
}

/**
 * 第三步 创建组建模块
 */
var createSug = function(data, dom) {
    var i = 0,
        len = data.length,
        html = '';
    for(; i < len; i++) {
        html += '<li>' + data[i] + '</li>';
    }
    dom.parentNode.getElementsByTagName('ul')[0].innerHTML = html;
}
var createValidateResult = function(data, dom) {
    dom.parentNode.getElementsByTagName('span')[0].innerHTML = data;
}

// 单元测试方法
var createSug = function(data, dom){
    console.log(data, dom, 'createSug');
}
var createValidateResult = function(data, dom) {
    console.log(data, dom, 'createValidateResult');
}

dealData(123, 'sug', input[1]);
dealData(['爱奇艺', '阿里巴巴', '爱漫画'], 'sug', input[1]);
dealData({
    'iqy': '爱奇艺',
    'albb': '阿里巴巴',
    'imh': '爱漫画'
}, 'sug', input[1]);
